package com.ctbu.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 金融衍生品交易表，包含交易ID、产品ID、用户ID、约定价格和交易日期等信息
 * </p>
 *
 * @author lli
 * @since 2024年06月27日
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("financial_trades")
public class FinancialTrades implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 唯一标识每个交易的ID，自动递增
     */
    @TableId(value = "trade_id", type = IdType.AUTO)
    private Integer tradeId;

    @TableField("trade_name")
    private String tradeName;

    /**
     * 关联的衍生品产品ID
     */
    @TableField("product_id")
    private Integer productId;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Integer userId;

    //添加临时字段：数据库中没有但是在业务中有应用
    @TableField(exist = false)
    private FinancialProduct financialProduct;

    //添加临时字段：数据库中没有但是在业务中有应用
    @TableField(exist = false)
    private Users users;

    /**
     * 交易的约定价格
     */
    @TableField("agreed_price")
    private BigDecimal agreedPrice;

    /**
     * 交易日期
     */
    @TableField("trade_date")
    private LocalDate tradeDate;

    /**
     * 记录创建的时间，默认值为当前时间
     */
    @TableField("created_at")
    private LocalDateTime createdAt;

    /**
     * 记录最后一次更新的时间，默认值为当前时间，并在记录更新时自动更新
     */
    @TableField("updated_at")
    private LocalDateTime updatedAt;


}
